package com.vf.admin.utils;

import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;


/**
 * 时间推算
 *
 * @author anxiang
 */
public class UseDate {

    static GregorianCalendar GC = new GregorianCalendar();
    private static final SimpleDateFormat SF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 天数推算
     *
     * @param i 天数
     * @param d 初始时间
     * @return
     */
    public static String getDay(int i, Date d) {
        GC.setTime(d);
        GC.add(5, +i);
        GC.set(GC.get(Calendar.YEAR), GC.get(Calendar.MONTH), GC.get(Calendar.DATE));
        synchronized (SF) {
            return SF.format(GC.getTime());
        }
    }

    /**
     * 周数推算
     *
     * @param i 周数
     * @param d 初始时间
     * @return
     */
    public static String getWeek(int i, Date d) {
        GC.setTime(d);
        GC.add(3, +i);
        GC.set(GC.get(Calendar.YEAR), GC.get(Calendar.MONTH), GC.get(Calendar.DATE));
        synchronized (SF) {
            return SF.format(GC.getTime());
        }
    }

    /**
     * 月数推算
     *
     * @param i 月数
     * @param d 初始时间
     * @return
     */
    public static String getMonth(int i, Date d) {
        GC.setTime(d);
        GC.add(2, +i);
        GC.set(GC.get(Calendar.YEAR), GC.get(Calendar.MONTH), GC.get(Calendar.DATE));
        synchronized (SF) {
            return SF.format(GC.getTime());
        }
    }

    /**
     * 小时推算
     *
     * @param i 小时
     * @param d 初始时间
     * @return
     */
    public static String getXS(int i, Date d) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(d);
        calendar.set(Calendar.HOUR,
                calendar.get(Calendar.HOUR) + i);
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
    }

    /**
     * 天数逆推
     *
     * @param i 天数
     * @param d 初始时间
     * @return
     */
    public static String getDayNi(int i, Date d) {
        GC.setTime(d);
        GC.add(5, -i);
        GC.set(GC.get(Calendar.YEAR), GC.get(Calendar.MONTH), GC.get(Calendar.DATE));
        synchronized (SF) {
            return SF.format(GC.getTime());
        }
    }

    public static void main(String[] args) {
        Timer timer = new Timer();
        // 三秒后开始执行，每隔一秒执行一次
        timer.schedule(
                new TimerTask() {
                    int i = 1;
                    @Override
                    public void run() {
                        System.out.println("******程序执行******");
                        //当执行到第5秒，程序结束
                        if (i++ == 30) {
                            timer.cancel();
                            System.out.println("#### 程序结束 ####");
                        }
                    }
                }, 0, 1000);
    }

}

